骨骼动画详解-Spine
骨骼动画编辑器——Spine
收费的
#Spine动画的使用
Cocos2d-x程序中,使用Spine动画首先需要包含spine的相关头文件。
1 | #include <spine/spine-cocos2dx.h> |
创建一个Spine动画对象,将动画文件和资源文件导入。
1 | SkeletonAnimation *skeletonNode = SkeletonAnimation::createWithFile("spineboy.json", "spineboy.atlas"); |
骨骼动画往往是不止一个动画的,例如:当人物需要行走时,就设置播放动画为行走;当要发动攻击时,就设置播放动画为攻击。下面方法可以设置当前播放动画,其中参数false表示不循环播放,true表示循环播放。
1 | skeletonNode->setAnimation(0, "walk", true); |
setAnimation方法只能播放一种动画,所以当要连续播放不同的动画时,需要使用addAnimation方法来实现,它可以一条一条的播放不同的动画。
1 | skeletonNode->addAnimation(0, "walk", true); |
对于一般情况下,动画的切换要求两个动画完全能衔接上,不然会出现跳跃感,这个对于美术来说要求很高,而Spine加了个动画混合的功能来解决这个问题。使得不要求两个动画能完全的衔接上,比如上面的walk和attack动画, 就是衔接不上的,直接按上面的办法播放,会出现跳跃,但是加了混合后,看起来就很自然了。哪怕放慢10倍速度观察,也完美无缺。这个功能在序列帧动画时是无法实现的,也是最体现Spine价值的一个功能。
1 | skeletonNode->setMix("walk", "attack", 0.2f); |
设置动画的播放快慢可通过设置它的timeScale值来实现。
1 | skeletonNode->timeScale = 0.6f; |
设置是否显示骨骼通过设置debugBones,true表示显示,false表示隐藏。
1 | skeletonNode->setDebugBonesEnabled(true); |
例子:创建一个player行走和攻击的动画, 并且循环播放。
1 | SkeletonAnimation *skeletonNode = SkeletonAnimation::createWithFile("spineboy.json", "spineboy.atlas"); |
`